package com.xqboss.apps.service.order.pay;

import com.xqboss.apps.domain.order.PayApply;
import com.xqboss.apps.dto.order.SignPayDto;
import com.xqboss.apps.dto.order.TradeResultDto;

import javax.servlet.http.HttpServletRequest;

/**
 * <p>
 *     支付执行器
 * </p>
 * @author Trent
 * @date 2023/8/23
 */
public abstract class PayExecutor {

    // 签名支付信息
    public abstract SignPayDto signPay(PayApply info);

    // 支付回调解析
    public abstract TradeResultDto verifyCallback(HttpServletRequest request, Object params);

    // 同步支付状态
    public abstract TradeResultDto queryTrade(PayApply info);

    // 取消支付订单
    public abstract boolean cancelPay(PayApply payApply);
}
